/**
 * BH1750光照强度传感器驱动头文件
 * 使用I2C接口通信
 */

#ifndef __BH1750_H
#define __BH1750_H

#include "stm32f10x.h"

// BH1750 I2C地址
#define BH1750_I2C_ADDR         0x23  // 7位地址 (ADDR引脚接地)
#define BH1750_I2C_ADDR_ALT     0x5C  // 备用地址 (ADDR引脚接VCC)

// BH1750命令定义
#define BH1750_CMD_POWER_DOWN   0x00
#define BH1750_CMD_POWER_ON     0x01
#define BH1750_CMD_RESET        0x07
#define BH1750_CMD_CONT_H_MODE  0x10  // 连续高分辨率模式 (1lx, 120ms)
#define BH1750_CMD_CONT_H_MODE2 0x11  // 连续高分辨率模式2 (0.5lx, 120ms)
#define BH1750_CMD_CONT_L_MODE  0x13  // 连续低分辨率模式 (4lx, 16ms)
#define BH1750_CMD_ONE_H_MODE   0x20  // 单次高分辨率模式 (1lx, 120ms)
#define BH1750_CMD_ONE_H_MODE2  0x21  // 单次高分辨率模式2 (0.5lx, 120ms)
#define BH1750_CMD_ONE_L_MODE   0x23  // 单次低分辨率模式 (4lx, 16ms)

// 测量时间寄存器
#define BH1750_MTREG_HIGH        0x40
#define BH1750_MTREG_LOW         0x60

// 函数声明
void BH1750_Init(void);
uint16_t BH1750_Read_Lux(void);
uint8_t BH1750_Set_Mode(uint8_t mode);
uint8_t BH1750_Power_On(void);
uint8_t BH1750_Power_Down(void);
uint8_t BH1750_Reset(void);
uint8_t BH1750_Set_Measurement_Time(uint8_t time);

#endif
